package market

import (
	"git.900sui.cn/kc/rpcinterface/interface/cards"
	"git.900sui.cn/kc/rpcinterface/interface/common"
	"git.900sui.cn/kc/rpcinterface/interface/order"
)

const (
	//提现状态：0-审核中 1-提现中；2-提现成功；3-提现失败
	WITHDRAW_STATUS_WAIT = 0
	WITHDRAW_STATUS_ING  = 1
	WITHDRAW_STATUS_SUCC = 2
	WITHDRAW_STATUS_FAIL = 3
)

// 营销管理查看共享卡-入参
type ArgsGetRcardList struct {
	common.BsToken
	common.Paging
	Name     string
	CardType int
}

// 营销管理查看共享卡-出参
type ReplyGetRcardList struct {
	TotalNum int
	Lists    []CardInfo
}

type CardInfo struct {
	CardId        int
	Name          string  // 名称
	Price         float64 // 面值
	CanShare      int     // 是否开启共享
	AlreadyShared int     // 已共享次数
	AlreadyUsed   int     // 已使用次数
}

// 商家共享卡操作-开启关闭-入参
type ArgsBusShareOperation struct {
	common.BsToken
	CardType  int // 卡项类型（3=综合卡 7=充值卡）
	CardId    int // 卡项id
	OperaType int // 操作（0-关闭共享，1-开启共享）
}

// 获取共享卡包信息-入参
type ArgsGetShareInfo struct {
	RelationId int
	common.Paging
}

// 获取共享卡包信息
type ReplyGetShareInfo struct {
	CardPackageInfo      CardPackageInfo
	ShareConsumeList     []ShareConsumeInfo
	ShareConsumeTotalNum int
}

// 卡包信息
type CardPackageInfo struct {
	RelationId    int     // 卡包关联Id
	OrderType     int     // 3=综合卡、7=充值卡
	Price         float64 // 面值
	ConsumePrice  float64 // 消费金额(面值)
	Discount      float64 // 原卡折扣
	ShareDiscount float64 // 共享折扣
	IsOpenShare   int     // 是否开启共享折扣 0=否 1=已开启
}

// 共享消费记录
type ShareConsumeInfo struct {
	Id           int          // 消费记录Id
	RelationId   int          // 卡包关联Id
	CardName     string       // 卡项名称
	SingleInfos  []SingleInfo // 单项目信息
	Time         int          // 消费时间戳
	TimeStr      string       // 格式化消费时间
	ConsumePrice float64      // 消费金额
	Income       float64      // 收益金额
}

// 消费单项目信息
type SingleInfo struct {
	SingleId   int     // 单项目Id
	SingleName string  // 单项目名
	Num        int     // 数量
	TotalPrice float64 // 总价格

}

// 用户操作共享卡入参
type ArgsUserShareOperation struct {
	common.Utoken         // 用户信息
	RelationId    int     // 卡包关联ID
	OperaType     int     // 操作（0-关闭共享，1-开启共享）
	ShareDiscount float64 // 共享折扣
}

// 获取共享卡消费码
type ReplyGetQrcode struct {
	Qrcode string
}

// 共享卡消费
type ArgsShareConsume struct {
	common.BsToken                       // 商家登录信息
	Singles        []order.ConsumeSingle // 消费的单项目数据
	Goods          []order.ConsumeGood   // 消费的实物产品
	RelationId     int                   // 卡包关联id
	Uid            int                   // 卡包所属人id 内部使用
}

//共享卡出参
type ReplyShareConsume struct {
	OrderSn string //订单号
	PayTypes []PayTypes //
	Ctime int64
	CtimeStr string
	TotalAmount string

}

//支付方式
type PayTypes struct {
	Type int   	//支付方式
	Name string //支付名
	Logo string
}

// 共享卡消费订单侧返回参数
type ReplyShareConsumeToOrder struct {
	FrozenId     int                 // 面值冻结记录id
	ConsumePrice float64             // 确认消费金额
	SingleInfos  []ConsumeSingleInfo // 确认消费单项目信息
}

// 消费单项目信息
type ConsumeSingleInfo struct {
	SingleId   int
	SingleName string
	Num        int
	TotalPrice float64
}

// 获取用户共享的卡列表入参
type ArgsGetUserShareList struct {
	common.Utoken // 用户信息
	common.Paging
}

// 获取用户共享的卡列表出参
type ReplyGetUserShareList struct {
	TotalNum    int
	Lists       []UserShareInfo
	CardImgs    map[int]interface{}
	DefaultImgs map[int]interface{}
}

// 用户共享卡列表数据
type UserShareInfo struct {
	RelationId    int
	CardId        int
	CardName      string
	CardType      int
	ImgId         int
	ShareDiscount float64 // 共享折扣
	Discount      float64 // 原卡折扣
	Balance       float64 // 余额
}

// 获取用户共享明细-入参
type ArgsGetUserShareConsumeList struct {
	common.Utoken // 用户信息
	common.Paging
}

// 获取用户共享明细-出参
type ReplyGetUserShareConsumeList struct {
	TotalNum         int                // 总数
	Lists []ShareConsumeInfo // 共享信息列表
}

// 获取用户收益信息-入参
type ArgsGetUserIncomeInfo struct {
	common.Utoken // 用户信息
}

// 获取用户收益-出参
type ReplyGetUserIncomeInfo struct {
	CanCashAmount float64 // 可提现金额
	TotalIncome   float64 // 累计收益
	UsedTimes     int     // 累计使用次数
}

// 获取指定的共享卡包的信息-入参
type ArgsGetShareCardPackageInfo struct {
	RelationId int // 卡包关联id
}

// 获取指定的共享卡包的信息-出参
type ReplyGetShareCardPackageInfo struct {
	RelationId    int     // 卡包关联id
	CardPackageId int     // 卡包id
	CardType      int     // 卡项类型 3=综合卡 7=充值卡
	IsOpenShare   int     // 是否开启共享 0=否 1=是
	ShareDiscount float64 // 共享折扣
}

// 充值卡复充的时候将新的折扣同步更新到对应的共享卡表中-入参
type ArgsSyncUpdateRcardDiscountToShareCard struct {
	Uid           int     // 购买人
	CardPackageId int     // 充值卡包id
	DiscountRate  float64 // 新的折扣率
}

// 卡包状态变更的时候-同步更新营销活动中共享卡的状态
type ArgsSyncUpdateShareCardStatus struct {
	RelationId int
	Status     int
}

// 根据shopIds获取最新的综合卡和充值卡-共享卡数据-入参
type ArgsGetSingleCardShareCardByShopIds struct {
	ShopIds []int
}

// 根据shopIds获取最新的综合卡和充值卡-共享卡数据-出参
type ReplyGetSingleCardShareCardByShopIds struct {
	Lists map[int][]cards.ShareCardList //key:shopId
}

// 获取门店内所有可用的共享卡列表-入参
type ArgsGetAllShareCardByShopId struct {
	ShopId int
	common.Paging
}
type GetAllShareCardByShopIdBase struct {
	RelationId    int    // 卡包关联id
	CardId        int    // 卡项id
	CardPackageId int    // 卡包id
	CardName      string // 卡项名称
	CardType      int    // 卡项类型
	ImgId         int
	ImgUrl        string  // 卡项封面图
	ShareDiscount float64 // 共享折扣
	Price         float64 // 可用面值
}

// 获取门店内所有的共享卡列表-出参
type ReplyGetAllShareCardByShopId struct {
	TotalNum int
	Lists    []GetAllShareCardByShopIdBase
}

// 获取消费卡记录-入参
type ArgsGetShareCardConsumeLog struct {
	ConsumeSn string // 消费订单号
}

// 获取消费卡记录-出参
type ReplyGetShareCardConsumeLog struct {
	Uid      int // 卡包所属用户id
	CardType int // 卡项类型 3=综合卡 7=充值卡
	CardId   int // 卡项id
	BusId    int
	ShopId   int
	RealPay  string // 实际支付金额
	Status   int
}

//共享卡提现-入参
type ArgsShareCardWithdraw struct {
	common.Utoken
	CardName   string  `length:"64" must:"Y"` //银行账户名
	CardNumber string  `length:"20" must:"Y"` //银行账号
	BankCode   string  `length:"12" must:"Y"` //银行联行号
	CashAmount float64 `length:"12" must:"Y"` //提现金额
}

//根据提现订单号更新共享卡提现信息-入参
type ArgsUpdateShareCardWithdrawByOrderSn struct {
	OrderSn    string  //提现订单编号
	CashFee    float64 //提现手续费
	CspOrderSn string  //代付订单号
	Status     int     //提现状态：1-提现中；2-提现成功；3-提现失败
	AgentTime  int64   //代付/清分时间
	ErrMsg     string  //提现错误信息
}

//获取所有待提现的提现记录-入参
type ArgsGetAllWithdrawingInfo struct {
	common.Paging
	Status int
}

//获取所有待提现的提现记录-出参
type GetAllWithdrawingInfoBase struct {
	OrderSn    string  //提现订单编号
	CspOrderSn string  //代付订单号
	CardName   string  //银行账户名
	CardNumber string  //银行账号
	BankCode   string  //银行联行号
	BankName   string  //银行开户行名称
	CashAmount float64 //提现金额（包含提现手续费）
	AgentTime  int64   //代付/清分时间
	CashFee    float64 //提现手续费
	Status     int     //提现状态：1-提现中；2-提现成功；3-提现失败
}
type ReplyGetAllWithdrawingInfo struct {
	Lists []GetAllWithdrawingInfoBase
}

//根据共享卡消费码获取共享卡列表-入参
type ArgsGetShareCardListByCode struct {
	QrCodeSn string //共享卡消费码
	common.BsToken  // 商家登录信息
}
type GetShareCardListByCodeBase struct {
	RelationId    int     //卡包关联id
	CardType      int     //卡包类型
	CardPackageId int     // 卡包id
	CardName      string  // 卡项名称
	ImgUrl        string  // 卡项封面图
	Price         float64 // 可用面值
	ShareDiscount float64 // 共享折扣
	Discount      float64 //原卡折扣
}

//根据共享卡消费码获取共享卡列表-出参
type ReplyGetShareCardListByCode struct {
	GetShareCardListByCodeBase
}

//获取共享卡提现记录-入参
type ArgsGetShareCardWithdrawList struct {
	common.Utoken
	common.Paging
	Status string //提现状态：0-待处理 1-提现中；2-提现成功；3-提现失败
}
type GetShareCardWithdrawListBase struct {
	OrderSn    string  //提现订单编号
	CashAmount float64 //提现金额
	CashFee    float64 //提现手续费
	CardNumber string  //银行账户
	BankName   string  //银行开户行名称
	Status     int     //提现状态：0-待处理 1-提现中；2-提现成功；3-提现失败
	ErrMsg     string  //提现失败错误信息
	Ctime      int64   //提现日期
}

//获取共享卡提现记录-出参
type ReplyGetShareCardWithdrawList struct {
	TotalNum int
	Lists    []GetShareCardWithdrawListBase
}
